import request from '@/utils/request'

// 数据转换函数：将后端Precords实体转换为前端组件需要的数据格式
function transformPrecordsToFrontendData(precordsList) {
  return precordsList.map(record => {
    // 计算停车时长（如果有入场时间和出场时间）
    let parkingDuration = ''
    if (record.entertime && record.outtime) {
      const enterTime = new Date(record.entertime)
      const exitTime = new Date(record.outtime)
      const durationMs = exitTime - enterTime
      const hours = Math.floor(durationMs / (1000 * 60 * 60))
      const minutes = Math.floor((durationMs % (1000 * 60 * 60)) / (1000 * 60))
      parkingDuration = `${hours}小时${minutes}分钟`
    } else if (record.entertime) {
      const enterTime = new Date(record.entertime)
      const now = new Date()
      const durationMs = now - enterTime
      const hours = Math.floor(durationMs / (1000 * 60 * 60))
      const minutes = Math.floor((durationMs % (1000 * 60 * 60)) / (1000 * 60))
      parkingDuration = `${hours}小时${minutes}分钟`
    }

    return {
      id: record.pid, // 后端使用pid，前端使用id
      carNumber: record.license, // 后端使用license，前端使用carNumber
      entryTime: record.entertime, // 后端使用entertime，前端使用entryTime
      exitTime: record.outtime, // 后端使用outtime，前端使用exitTime
      parkingDuration: parkingDuration, // 计算停车时长
      amount: record.payment || '未缴费', // 后端使用payment，前端使用amount
      paymentStatus: record.ispay || 0, // 后端使用ispay，前端使用paymentStatus
      cartype: record.cartype, // 保留车辆类型
      garagenum: record.garagenum // 保留车库编号
    }
  })
}

// 获取出场车辆列表（未支付的停车记录）
export function getExitCars(query) {
  // 添加筛选条件，只查询未支付的记录
  const params = {
    ...query,
    outtime: '', // 空字符串表示未出场
    ispay: 0 // 0表示未缴费
  }
  return request({
    url: '/system/precords/list',
    method: 'get',
    params: params
  }).then(response => {
    // 转换数据格式后返回
    if (response.rows) {
      response.rows = transformPrecordsToFrontendData(response.rows)
    }
    return response
  })
}

// 缴纳停车费（更新停车记录的支付状态）
export function payParkingFee(recordId, paymentAmount) {
  // 仅更新支付状态，出场时间和费用已在车牌软件检测时更新
  return request({
    url: '/system/precords',
    method: 'put',
    data: {
      pid: recordId,
      ispay: 1, // 1表示已缴费
      payment: paymentAmount // 保留原有支付金额
    }
  })
}

// 查询缴费记录（已支付的停车记录）
export function getPaymentRecord(query) {
  // 添加筛选条件，只查询已支付的记录
  const params = {
    ...query,
    ispay: 1 // 1表示已缴费
  }
  return request({
    url: '/system/precords/list',
    method: 'get',
    params: params
  }).then(response => {
    // 转换数据格式后返回
    if (response.rows) {
      response.rows = transformPrecordsToFrontendData(response.rows)
    }
    return response
  })
}
